/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.utilitarias;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Classe que armazena a lista de tipos de fontes eletromagneticas
 * @author Carlos H. S. Santos
 * @version 1.0
 */
public class ListadeTiposFontesEletromagneticas {

    private Vector types;
    private int qtdTypes;

    /**
     * Método Construtor
     * @exception IOException
     */
    public ListadeTiposFontesEletromagneticas() throws IOException {

        // Attributes
        types = new Vector();
        String str = null;
        String name = new String();
        StringTokenizer strtoken = null;
        TiposdeFonteEletromagnetica typeSources = new TiposdeFonteEletromagnetica();
        int cont;

        // Carrega Arquivos com o Tipo de Fontes
        String caminho = System.getProperty("user.dir") + File.separator + "tiposdefonteseletromagneticas.txt";
        FileInputStream inputStream = new FileInputStream(caminho);
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

        try {
            //Descarta as duas primeiras linhas de cabeçalho do arquivo
            reader.readLine();
            reader.readLine();

            // Ler enquanto há fontes cadastradas
            qtdTypes = 0;
            while ((str = reader.readLine()) != null) {
                // Tokens
                qtdTypes++;
                strtoken = new StringTokenizer(str);
                typeSources = new TiposdeFonteEletromagnetica();
                typeSources.setId(Integer.valueOf(strtoken.nextToken()));
                typeSources.setType(strtoken.nextToken());
                typeSources.setNParameters(Integer.valueOf(strtoken.nextToken()));
                for (cont = 0; cont < typeSources.getNParameters(); cont++) {
                    typeSources.setParameterName(cont, strtoken.nextToken());
                }
                types.add((TiposdeFonteEletromagnetica) typeSources);
            }
            reader.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ListadeTiposFontesEletromagneticas.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Método que retorna todos os tipos de fonte
     * @return Vector TypeofElectromagneticSource
     */
    public Vector getVectorSourceType() {
        return types;
    }

    /**
     * Método que retorna um determinado tipo de fonte eletromagnetica
     * @param id int
     * @return TypeofElectromagneticSource
     */
    public TiposdeFonteEletromagnetica getSourceType(int id) {
        return (TiposdeFonteEletromagnetica) types.get(id);
    }

    /**
     * Retorna a quantidade de tipos de fontes cadastradas
     * @return TypeofElectromagneticSource
     */
    public int getNTypes() {
        return qtdTypes;
    }
}
